package com.gxa.p2p.controller;

import com.gxa.p2p.businessExceptionCode.ErrorCode;
import com.gxa.p2p.exception.BusinessException;
import com.gxa.p2p.mapper.MultiAddrMapper;
import com.gxa.p2p.pojo.AccountInfo;
import com.gxa.p2p.service.AccountInfoService;
import com.gxa.p2p.util.MD5Creater;
import com.gxa.p2p.util.MapUtil;
import com.gxa.p2p.util.ReturnMap;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;

// 开启跨域访问
@CrossOrigin
// 交给Spring代理控制（个人信息控制器）
@Controller
// 设置请求一级路径
@RequestMapping("/personalCent")
@ResponseBody
@Api(value = "平台用户信息控制器", tags = "负责处理账户资料")
public class PersonalCentController {
    /*
       @Api 描述Controller的作用
            value：代表代码级描述
            tags：代表页面级描述

       @ApiOperation 设置方法描述
           value：表示页面级接口描述
           notes：表示完整接口说明
           httpMethod：可选参数，代表调用的请求方式，swagger标示的spring mvc的请求方式，
           response：可选参数，代表返回类型


      @ApiImplicitParam(s) 设置参数描述
           name：代表页面级描述参数名
           value：代表页面级描述参数说明
           required：代表页面级展示是否一定要输入
           dataType：代表页面级描述参数类型
           paramType：
               header-->请求参数的获取：@RequestHeader(代码中接收注解)
               query-->请求参数的获取：@RequestParam(代码中接收注解)
               path（用于restful接口）-->请求参数的获取：@PathVariable(代码中接收注解)
               body-->请求参数的获取：@RequestBody(代码中接收注解)

        @ApiParam 参数描述
            name：页面级描述形式参数的名字
            value：页面级形参的说明
            required：页面级标注是否一定需要输入

    */
    @Resource(name = "accountInfoServiceImpl")
    AccountInfoService accountInfoService;


    @ApiOperation(value = "查询用户基本信息的接口",
            notes = "获取用户基本信息",
            httpMethod = "get", response = AccountInfo.class)

    @ApiImplicitParam(name = "id", value = "需要查询信息用户的id",
            required = true, dataType = "int")
    @GetMapping("/findById")
    public Map<String, Object> findMsg(@RequestParam("userId") Integer id) {
        // 查询用户信息，登录之后
        HashMap<String, Object> accountInfo = accountInfoService.findById(id);
        ReturnMap<Object> returnMap = new ReturnMap<>();
        return returnMap.returnMap(accountInfo);
    }



    //
    @ApiOperation(value = "设置交易密码",
            notes = "设置交易密码借款",
            httpMethod = "put", response = String.class)

    @PutMapping
    public Map<String, Object> updateAcc(@RequestBody Map<String,String> map) {
        System.out.println(map);
        String userId=map.get("userId");
        String tradePassword = map.get("tradePassword");
        AccountInfo accountInfo = new AccountInfo();
        accountInfo.setUserId(Integer.valueOf(userId));
        accountInfo.setTradePassword(MD5Creater.encode(tradePassword+userId));
        MapUtil mapUtil = new MapUtil();
        if (accountInfoService.UpAcc(accountInfo)){
            mapUtil.setCode(0);
            mapUtil.setMsg("成功！！");
        }else {
            throw new BusinessException(ErrorCode.FAILED);
        }
        return mapUtil.getMap();
    }
}
